package org.dromara.xhlj.domain.vo;

import org.dromara.xhlj.domain.XhljTopic;
import org.dromara.xhlj.domain.XhljConferenceInfo;
import org.dromara.xhlj.domain.XhljDiscussion;
import org.dromara.xhlj.domain.XhljTopicActivityCollect;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.core.utils.tree.TreeCruxField;
import org.dromara.wx.domain.WxUser;
import org.dromara.wx.domain.vo.WxUserVo;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 话题视图对象 xhlj_topic
 *
 * @author yf
 * @date 2024-07-28
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XhljTopic.class)
public class XhljTopicVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 话题ID
     */
    @ExcelProperty(value = "话题ID")
    private Integer topicId;
    /**
     * 话题标题
     */
    @ExcelProperty(value = "话题标题")
    private String topicTitle;
    /**
     * 大会id
     */
    @ExcelProperty(value = "大会id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = XhljConferenceInfo.TRANS_ID_TO_VO, mapper = "conferenceInfoId")
    private XhljConferenceInfoVo conferenceInfo;
    private Integer conferenceInfoId;
    /**
     * 创建人wx_user（西湖论剑用户）
     */
    @ExcelProperty(value = "创建人wx_user")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Translation(type = WxUser.TRANS_ID_TO_VO, mapper = "createBy")
    private WxUserVo wxUser;
    private Integer createBy;
    /**
     * 话题内容
     */
    @ExcelProperty(value = "话题内容")
    private String topicContent;
    /**
     * 话题地点
     */
    @ExcelProperty(value = "话题地点")
    private String topicLocation;
    /**
     * 话题标签（0=安全特训营，1=新品发布，2=创新案例实践征集，3=奋进十一年，4=奋进十一年，5=直播探索，6=白皮书，7=大会海报，8=媒体中心精彩图片）
     */
    @ExcelProperty(value = "话题标签", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "topic_tags")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "topic_tags", mapper = "topicTags")
    private String topicTagsDictData;
    private String topicTags;
    /**
     * 话题订阅量
     */
    @ExcelProperty(value = "话题订阅量")
    private Integer subscriptionCount;
    /**
     * 话题讨论数量
     */
    @ExcelProperty(value = "话题讨论数量")
    private Integer topicDiscussions;
    /**
     * 话题图片
     */
    @ExcelProperty(value = "话题图片")
    private String topicImage;
    /**
     * 话题视频
     */
    @ExcelProperty(value = "话题视频")
    private String topicVideoFile;
    /**
     * 话题状态（0=未发布，1=已发布）
     */
    @ExcelProperty(value = "话题状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "topic_status")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "topic_status", mapper = "topicStatus")
    private String topicStatusDictData;
    private Integer topicStatus;
    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 动态讨论 子列表
     */
    @JsonIgnore
    @Translation(type = XhljDiscussion.TRANS_ID_TO_VO_LIST, mapper = "topicId" , other = "topic_id")
    private List<XhljDiscussionVo> xhljDiscussionVoList;
    /**
     * 活动订阅 子列表
     */
    @JsonIgnore
    @Translation(type = XhljTopicActivityCollect.TRANS_ID_TO_VO_LIST, mapper = "topicId" , other = "topic_id")
    private List<XhljTopicActivityCollectVo> xhljTopicActivityCollectVoList;
}
